// 导入数据库操作模块
const db = require('../db/index')

// 获取医生信息
exports.getDoctor = (req,res)=>{
    const { name, gender, specialty, hospital_id, position } = req.body; // 从请求体中获取查询参数

    // 构建 SQL 查询
    let sql = 'SELECT * FROM doctor WHERE 1=1'; // 1=1 是为了简化后续的 AND 条件拼接
    const params = [];

    // 动态添加查询条件
    if (name) {
        sql += ' AND name LIKE ?';
        params.push(`%${name}%`); // 使用通配符进行模糊查询
    }

    if (gender) {
        sql += ' AND gender = ?';
        params.push(gender);
    }

    if (specialty) {
        sql += ' AND specialty = ? '
        params.push(specialty)
    }

    if (hospital_id) {
        sql += ' AND hospital_id = ?';
        params.push(hospital_id);
    }

    if (position) {
        if (Array.isArray(position)) {
            sql += ' AND position IN (' + position.map(() => '?').join(',') + ')';
            params.push(...position);
        }
        else {
            sql += ' AND position = ?'
            params.push(position)
        }
    }

     // 打印构建的 SQL 和参数
    //  console.log('构建的 SQL 查询:', sql);
    //  console.log('查询参数:', params);

    db.query(sql,params,(err,result)=>{
        if(err){
            return res.send({
                status: 1,
                msg: err
            })
        }
        // 没有专家及以上的医生
        if(!result.length==1){
            return res.send({
                status: 1,
                msg: '没有查询到'
            })
        }
        // console.log('结果：',result)
        return res.send({
            status: 1,
            msg: '查询成功',
            data: result
        })
    })
}

// 获取部门信息
exports.getDepartment = (req,res) => {
    const { name, isKey, hospital_id } = req.body; // 从请求体中获取查询参数

    // 构建 SQL 查询
    let sql = 'SELECT * FROM department WHERE 1=1'; // 1=1 是为了简化后续的 AND 条件拼接
    const params = [];// 动态添加查询条件
    if ( name ) {
        sql += ' AND name LIKE ?';
        params.push(`%${name}%`); // 使用通配符进行模糊查询
    }
    if ( isKey ) {
        sql += ' AND isKey = ?';
        params.push(isKey);
    }
    if ( hospital_id ) {
        sql += ' AND hospital_id = ?';
        params.push(hospital_id);
    }
    // 打印构建的 SQL 和参数
    // console.log('构建的 SQL 查询:', sql);
    // console.log('查询参数:', params);

    db.query(sql,params,(err,result)=>{
        if(err){
            return res.send({
                status: 1,
                msg: err
            })
        }
        // 没有专家及以上的医生
        if(!result.length==1){
            return res.send({
                status: 1,
                msg: '没有查询到'
            })
        }
        return res.send({
            status: 1,
            msg: '查询成功',
            data: result
        })
    })
}

// 获取医院信息
exports.getHospital = (req,res) => {
    const { id, name, address } = req.body
    // 构建 SQL 查询
    let sql = 'SELECT * FROM hospital WHERE 1=1'; // 1=1 是为了简化后续的 AND 条件拼接
    const params = [];// 动态添加查询条件
    if ( name ) {
        sql += ' AND name LIKE ?';
        params.push(`%${name}%`); // 使用通配符进行模糊查询
    }
    if ( address ) {
        sql += ' AND address LIKE ?';
        params.push(`%${address}%`); // 使用通配符进行模糊查询
    }
    if ( id ) {
        sql += ' AND id = ?';
        params.push(id); // 使用通配符进行模糊查询
    }
    db.query(sql,params,(err,result)=>{
        if(err){
            return res.send({
                status: 1,
                msg: err
            })
        }
        return res.send({
            status: 0,
            msg: '查询成功',
            data: result
        })
    })
}

// 获取用户信息
exports.getUser = (req,res) => {
    const { id, name, username, sex, phone, email } = req.body
    // 构建 SQL 查询
    let sql = 'SELECT * FROM user WHERE 1=1'; // 1=1 是为了简化后续的 AND 条件拼接
    const params = [];

    // 动态添加查询条件
    if (id) {
        sql += ' AND id = ?';
        params.push(id)
    }

    if (name) {
        sql += ' AND name LIKE ?';
        params.push(`%${name}%`); // 使用通配符进行模糊查询
    }

    if (sex) {
        sql += ' AND sex = ?';
        params.push(sex);
    }

    if (username) {
        sql += ' AND username = ?';
        params.push(username);
    }

    if (phone) {
        sql += ' AND phone = ?';
        params.push(phone);
    }

    if (email) {
        sql += ' AND email = ?';
        params.push(email);
    }

    db.query(sql,params,(err,result) => {
        if(err){
            return res.send({
                status: 1,
                msg: err
            })
        }
        if(!result.length==1){
            return res.send({
                status: 1,
                msg: '没有查询到'
            })
        }
        return res.send({
            status: 0,
            msg: '查询成功',
            data: result
        })
    })
}

// 获取出诊时间
exports.getSchedule = (req, res) => {
    const { doctor_id, date } = req.body; // 假设前端传来 'date' 参数

    // 将日期转换为英文缩写的星期
    const dayOfWeek = getDayOfWeekAbbreviation(date);

    // 构建 SQL 查询
    let sql = 'SELECT doctor_id, day_of_week, start_time, end_time FROM worktime WHERE 1=1'; // 1=1 是为了简化后续的 AND 条件拼接
    const params = [];

    if (doctor_id) {
        sql += ' AND doctor_id = ?';
        params.push(doctor_id);
    }
    if (dayOfWeek) {
        sql += ' AND day_of_week = ?';
        params.push(dayOfWeek);
    }

    db.query(sql, params, (err, result) => {
        if (err) {
            return res.send({
                status: 1,
                msg: err
            });
        }
        return res.send({
            status: 0,
            msg: '查询成功',
            data: result
        });
    });
};

// 辅助函数：将日期字符串转换为英文缩写的星期
function getDayOfWeekAbbreviation(dateString) {
    if (!dateString) return null;
    
    // 解析自定义日期格式字符串
    const date = new Date(dateString);
    if (isNaN(date)) return null; // 检查日期是否合法

    // JavaScript 的 getDay() 方法：0 表示周日，1 表示周一，依此类推
    const daysOfWeek = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];

    return daysOfWeek[date.getDay()];
}

